let { genToken, checkToken } = require('./token.js');
let url = require('url');
const neetTokenRoute = [
  'getaddress',
  'addaddress',
  'deladdress',
  'updateaddress',
  'userorder',
  'commitorder',
  'upload',
  'cancelorder',
  'delorder',
  ,
  'getorder',
  'payqrcode',
  'querypayorder',
  'history',
  'addhistory',
  'updatepassword',
];

// 导出模块
module.exports = {
  verifyToken(req, res, next) {
    // 格式化请求路径
    let pathname = url.parse(req.url, true).pathname.toLowerCase();
    pathname =
      pathname.charAt(pathname.length - 1) === '/'
        ? pathname.substring(0, pathname.length - 1)
        : pathname;
    pathname = pathname.substring(1);

    // 在验证名单内，校验token
    if (neetTokenRoute.includes(pathname)) {
      // 获取token
      let token = req.headers['token'];
      // 校验token
      let userInfo = checkToken(token);

      if (userInfo === false) {
        // 校验失败
        res.status(401).json({
          message: 'token失效',
        });
        return;
      } else {
        // 校验成功，给req添加userInfo属性，记录用户信息，便于其他下一个中间件使用
        req.userInfo = userInfo;
        next();
      }
    } else {
      // 不在验证名单，则放行
      next();
    }
  },
};
